/**
 * Class HTMLFormater
 * 
 * @name HTMLFormater
 * @brief ClassDescript
 * @author Hermann D. Schimpf <hschimpf@gschimpf.com>
 * @license http://opensource.org/licenses/gpl-2.0.php
 * @date 2010-01-06
 * @version 0.1.0
 */
function HTMLFormater() {};
/* constante con el valor para italic */
var ITALIC = 'font-style:italic';
/* constante con el valor para bold */
var BOLD = 'font-weight:bold';
/* constante con el valor para underline */
var UNDERLINE = 'text-decoration:underline';
/* constante con el valor para blink */
var BLINK = 'text-decoration:blink';
/* version de la clase */
HTMLFormater.prototype.version = 0;
/* subversion de la clase */
HTMLFormater.prototype.subversion = 1;
/* numero de revision de la clase */
HTMLFormater.prototype.revision = 0;
/* valor para el color rojo */
HTMLFormater.prototype.redColor = 'c00';
/* valor para el color verde */
HTMLFormater.prototype.greenColor = '060';
/* valor para el color azul */
HTMLFormater.prototype.blueColor = '00a';
/* valor para el color amarillo */
HTMLFormater.prototype.yellowColor = 'ca0';
/**
 * Retornamos la version de la clase
 * 
 * @return String Version de la clase
 */
HTMLFormater.prototype.getVersion = function() {
	/* retornamos la version actual de la clase */
	return 'v' + this.version + '.' + this.subversion + '.' + this.revision;
};
/**
 * Formateamos el texto en italica
 * 
 * @param String Texto a formatear
 * @return String Texto formateado
 */
HTMLFormater.prototype.italic = function(stringText) {
	/* formateamos y retornamos la cadena formateada */
	return this.getFormat(stringText, ITALIC);
};
/**
 * Formateamos el texto en negrita
 * 
 * @param String Texto a formatear
 * @return String Texto formateado
 */
HTMLFormater.prototype.bold = function(stringText) {
	/* formateamos y retornamos la cadena formateada */
	return this.getFormat(stringText, BOLD);
};
/**
 * Formateamos el texto subrayado
 * 
 * @param String Texto a formatear
 * @return String Texto formateado
 */
HTMLFormater.prototype.underline = function(stringText) {
	/* formateamos y retornamos la cadena formateada */
	return this.getFormat(stringText, UNDERLINE);
};
/**
 * Formateamos el texto en intermitente
 * 
 * @param String Texto a formatear
 * @return String Texto formateado
 */
HTMLFormater.prototype.blink = function(stringText) {
	/* formateamos y retornamos la cadena formateada */
	return this.getFormat(stringText, BLINK);
};
/**
 * Formateamos el texto con color rojo
 * 
 * @param String Texto a formatear
 * @return String Texto formateado
 */
HTMLFormater.prototype.red = function(stringText) {
	/* formateamos y retornamos la cadena formateada */
	return this.getFormat(stringText, 'color:#' + this.redColor);
};
/**
 * Formateamos el texto con color verde
 * 
 * @param String Texto a formatear
 * @return String Texto formateado
 */
HTMLFormater.prototype.green = function(stringText) {
	/* formateamos y retornamos la cadena formateada */
	return this.getFormat(stringText, 'color:#' + this.greenColor);
};
/**
 * Formateamos el texto con color azul
 * 
 * @param String Texto a formatear
 * @return String Texto formateado
 */
HTMLFormater.prototype.blue = function(stringText) {
	/* formateamos y retornamos la cadena formateada */
	return this.getFormat(stringText, 'color:#' + this.blueColor);
};
/**
 * Formateamos el texto con color amarillo
 * 
 * @param String Texto a formatear
 * @return String Texto formateado
 */
HTMLFormater.prototype.yellow = function(stringText) {
	/* formateamos y retornamos la cadena formateada */
	return this.getFormat(stringText, 'color:#' + this.yellowColor);
};
/**
 * Formateamos el texto con formato para clases
 * 
 * @param String Texto a formatear
 * @return String Texto formateado
 */
HTMLFormater.prototype.classFormat = function(stringText) {
	/* formateamos y retornamos la cadena */
	return this.italic(this.bold(this.blue(stringText)));
};
/**
 * Formateamos el texto con formato para metodos
 * 
 * @param String Texto a formatear
 * @return String Texto formateado
 */
HTMLFormater.prototype.methodFormat = function(stringText) {
	/* formateamos y retornamos la cadena */
	return this.italic(this.blue(stringText));
};
/**
 * Formateamos el texto con formato para atributos
 * 
 * @param String Texto a formatear
 * @return String Texto formateado
 */
HTMLFormater.prototype.attrFormat = function(stringText) {
	/* formateamos y retornamos la cadena */
	return this.italic(this.bold(this.green(stringText)));
};
/**
 * Formateamos el texto con formato para parametros
 * 
 * @param String Texto a formatear
 * @return String Texto formateado
 */
HTMLFormater.prototype.paramFormat = function(stringText) {
	/* formateamos y retornamos la cadena */
	return this.italic(this.yellow(stringText));
};
/**
 * Formateamos el texto con formato para ficheros
 * 
 * @param String Texto a formatear
 * @return String Texto formateado
 */
HTMLFormater.prototype.fileFormat = function(stringFile, onlyBase) {
	/* retornamos el nombre del fichero con formato */
	return this.italic(this.yellow(
	/* verificamos si es solo el nombre del fichero */
	onlyBase === false || typeof onlyBase == 'undefined' ?
	/* enviamos la ruta completa */
	stringFile :
	/* enviamos solo el nombre del fichero */
	basename(stringFile)));
};
/**
 * Formateamos el texto con codigo HTML
 * 
 * @param String Texto a limpiar
 * @return String Texto limpio
 */
HTMLFormater.prototype.cleanHTML = function(stringText) {
	/* reemplazamos algunos simbolos especiales por su codigo */
	stringText = str_replace(Array('<', '>'), Array('&lt;', '&gt;'), stringText);
	/* retornamos la cadena formateada */
	return str_replace(Array('|font', '|/font|', '\'|'), Array('<font', '</font>', '\'>'), stringText);
};
/**
 * Retornamos la cadena con el texto dentro del formato
 * 
 * @param String Texto a formatear
 * @param String Formato a aplicar
 * @return String Texto con formato
 */
HTMLFormater.prototype.getFormat = function(text, style) {
	/* verificamos la cadena ingresada */
	this.verificarCadena(text);
	/* retornamos la cadena con formato */
	return '|font style=\'' + style + ';\'|' + text + '|/font|';
};
/**
 * Verificamos si una cadena es valida
 * 
 * @param String Cadena a verificar
 * @throws TypeException
 */
HTMLFormater.prototype.verificarCadena = function(cadena) {
	/* verificamos si especifico la cadena */
	if (cadena === undefined)
		/* salimos con una excepcion */
		throw new Error('No se especifico la cadena a formatear');
};